//package com.whfp.coky.ui.base.vm
//
//import android.util.Log
//import androidx.lifecycle.LifecycleOwner
//import androidx.lifecycle.MutableLiveData
//import androidx.lifecycle.Observer
//import androidx.viewbinding.ViewBinding
//import com.whfp.coky.api.response.BaseResult
//import com.whfp.coky.api.response.ListBean
//import com.whfp.coky.other.Constants
//import com.whfp.coky.ui.base.BaseFragment
//import com.whfp.coky.ui.base.BaseRecycleFrag
//import com.whfp.coky.ui.base.BaseViewModel
//import com.whfp.coky.ui.base.model.RequestBean
//import com.whfp.coky.widget.StatusLayout
//
///**
// * T表示的是具体操作model
// * recyclerview 基类VM
// * created by coky on 2022/3/8
// */
//abstract class FragRecycleVM<VB : ViewBinding, T> : BaseViewModel<VB>() {
//
//
//    var mListDatas = MutableLiveData<ListBean<T>>()
//    var requestMap: HashMap<String, String>? = null
//    var mRequest = MutableLiveData<RequestBean>()
//    var isLastPage = false
//
//    open fun httpDatas(page: Int) {
//        Log.e("tag", "httpDatas...page:${page}...mRequest:${mRequest.value.toString()}")
//        launchList({ httpBlock(page) }, mListDatas, false)
//    }
//
//    abstract fun buildRequest()
//
//    abstract suspend fun httpBlock(page: Int): BaseResult<ListBean<T>>
//
//    //    监听数据变化
//    override fun observe(fragment: BaseFragment<*,*>, owner: LifecycleOwner) {
//        val mContext = fragment as BaseRecycleFrag<*, *, T>
////    数据变化
//        mListDatas.observe(owner, Observer {
//            fragment.httpFinshed()
////            是列表数据
//            if (it is ListBean<*>) {
////                判断下拉时
//                if (mContext.page == Constants.PAGE_INDEX) mContext.mAdapter?.clearData()
//
//                if (it.getData() == null || it.getData()!!.isEmpty()) {
//                    fragment.showEmpty()
//                } else {
//                    mContext.mAdapter?.addData(it.getData() as MutableList<T>)
//                    fragment.showComplete()
//                }
//                isLastPage = it.isLastPage()
//            } else {
////                非正常列表数据处理
//                notListDatas(it)
//            }
//        })
//        errorData.observe(owner, Observer {
//            fragment.httpFinshed()
//            fragment.showError(object : StatusLayout.OnRetryListener {
//                override fun onRetry(layout: StatusLayout) {
//                    mContext.page = Constants.PAGE_INDEX
//                    httpDatas(mContext.page)
//                }
//
//            })
//        })
//
//        mRequest.observe(owner, Observer {
//            isLastPage = false
//            httpDatas(Constants.PAGE_INDEX)
//        })
//    }
//
//
//    open fun notListDatas(it: Any?) {
//
//    }
//
//}